/**
 * Created by lenovo on 17-6-7.
 */
var mongodb = require('./db');
var ObjectID = require('mongodb').ObjectID;

function note(val){
    this.user = val.user;
    this.title = val.title;
    this.content = val.content;
    this.comment_num = val.comment_num;
    this.created_at = val.created_at;
    this.updated_at = val.updated_at;
}

module.exports = note;

note.prototype.save = function(callback){
    var note_info = {
        user: this.user,
        title: this.title,
        content: this.content,
        comment_num: this.comment_num,
        created_at: this.created_at,
        updated_at: this.updated_at
    }
    mongodb.close();
    mongodb.open(function(err,db){
        if(err){
            console.log(err);
            return callback(err);
        }
        db.collection('note',function(err,collection){
            if(err){
                db.close();
                return callback(err);
            }
            collection.insert(note_info,{
                safe:true//插入的有序(true)和无序(false)
            }, function(err,note){
                db.close();
                if(err){
                    return callback(err);
                }
                callback(null,note);
            });
        });
    });
};

note.replace = function(data,callback){
    mongodb.close();
    mongodb.open(function(err,db){
        if(err){
            return callback(err);
        }
        db.collection('note',function(err,collection){
            if(err){
                db.close();
                return callback(err);
            }
            collection.update({_id:new ObjectID(data._id)},{$set:{title:data.title, content:data.content, updated_at: data.updated_at}},function(err,data) {
                db.close();
                if (err) {
                    return callback(err);
                }
                callback(null, data)
            });
        });
    });
};

note.replace_num = function(data,callback){
    mongodb.close();
    mongodb.open(function(err,db){
        if(err){
            return callback(err);
        }
        db.collection('note',function(err,collection){
            if(err){
                db.close();
                return callback(err);
            }
            collection.update({_id:new ObjectID(data._id)},{$set:{comment_num:data.comment_num}},function(err,data) {
                db.close();
                if (err) {
                    return callback(err);
                }
                callback(null, data)
            });
        });
    });
};

note.get = function(data,callback){
    mongodb.close();
    mongodb.open(function (err, db) {
        if (err) {
            return callback(err);//错误，返回 err 信息
        }
        //读取 users 集合
        db.collection('note', function (err, collection) {
            if (err) {
                db.close();
                return callback(err);//错误，返回 err 信息
            }
            collection.find(data).sort({updated_at: -1}).toArray(function (err, docs) {
                db.close();
                if (err) {
                    return callback(err);//失败！返回 err
                }
                callback(null, docs);//成功！以数组形式返回查询的结果
            });
        });
    });
};

note.delete = function(data,callback){
    mongodb.close();
    mongodb.open(function (err, db) {
        if (err) {
            return callback(err);//错误，返回 err 信息
        }
        //读取 users 集合
        db.collection('note', function (err, collection) {
            if (err) {
                db.close();
                return callback(err);//错误，返回 err 信息
            }
            collection.remove({_id:new ObjectID(data) },function(err,user){
                db.close();
                if (err) {
                    return callback(err);
                }
                callback(null, user)
            });

        });
    });
};
